// 修复 Prisma 客户端
const { execSync } = require('child_process');
const fs = require('fs');
const path = require('path');

console.log('开始修复 Prisma 客户端...');

// 检查 schema.prisma 文件
const schemaPath = path.join(__dirname, 'prisma', 'schema.prisma');
if (!fs.existsSync(schemaPath)) {
  console.error('找不到 schema.prisma 文件!');
  process.exit(1);
}

// 读取 schema 内容
const schemaContent = fs.readFileSync(schemaPath, 'utf8');
console.log('找到 schema.prisma 文件，内容长度:', schemaContent.length);

// 检查数据库 URL
if (!process.env.DATABASE_URL) {
  console.log('未找到 DATABASE_URL 环境变量，从 .env 加载');
  require('dotenv').config();
}

console.log('数据库 URL 前缀:', process.env.DATABASE_URL ? process.env.DATABASE_URL.substring(0, 20) + '...' : '未定义');

try {
  // 运行 Prisma 生成命令
  console.log('执行 npx prisma generate...');
  execSync('npx prisma generate', { stdio: 'inherit' });
  
  // 验证生成的客户端
  const prismaClientPath = path.join(__dirname, 'node_modules', '.prisma', 'client', 'index.js');
  if (fs.existsSync(prismaClientPath)) {
    console.log('Prisma 客户端已成功生成!');
    
    // 尝试加载并列出模型
    try {
      const { PrismaClient } = require('@prisma/client');
      const prisma = new PrismaClient();
      console.log('可用的 Prisma 模型:', Object.keys(prisma).filter(key => !key.startsWith('$')));
    } catch (e) {
      console.error('无法加载 Prisma 客户端:', e.message);
    }
  } else {
    console.error('找不到生成的 Prisma 客户端文件!');
  }
  
  console.log('Prisma 修复完成!');
} catch (error) {
  console.error('修复 Prisma 失败:', error.message);
  process.exit(1);
} 